package com.weiyuwqj.api.service;



import com.weiyuwqj.api.model.*;
import com.weiyuwqj.api.base.BaseService;
import com.weiyuwqj.api.common.PageList;
import com.weiyuwqj.api.common.Paginator;
import com.weiyuwqj.api.model.vo.AccountCheckingVo;
import com.weiyuwqj.api.model.vo.BasItemVo;
import com.weiyuwqj.api.model.vo.ItemAndPlanVO;
import com.weiyuwqj.api.model.vo.SysAssetProductVo;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * Created by zhangyong on 2016/8/5.
 */
public interface BasItemService extends BaseService<BasItem> {

    //后台列表
    PageList getList(Paginator p, Map map);

    //后台列表
    List<BasItemVo> getList(Map map);

    //统计发布项目数量
    Integer countByAllItemNum(Map map);

    //统计发布项目金额
    Double sumByAllItemAccount(Map map);

    //统计已还款的项目
    Integer countByRepayItem(Map map);

    //统计未还款的项目
    Integer countByNoRepayItem(Map map);

    //待初审项目数量
    Integer countByFirstItemNum(Map map);

    //待初审项目金额
    Double sumByFirstItemAccount(Map map);

    //未还款金额
    Double sumNoRepayItemAccount(Map map);

    //已还款金额
    Double sumRepayItemAccount(Map map);

//    Object firstVerify(int itemId, BusVerify verify, Integer countdown, String releaseTime,Integer itemType);
//
//    Object cancel(int itemId);

    //后台统计项目投资人数
    Integer countItemInvestNum(Map map);

    //截标
    void interceptItem(Integer itemId);

    //修改项目状态
    void updateItemStatus(int oldStatus,int newStatus, Integer itemId);

    //前天项目列表
    PageList queryByStatus(Paginator p, Map map);

    /**
     * 推荐标列表
     * @return 推荐表列表
     */
    List<BasItemVo> queryRecomendList();

    BasItemVo itemById(Integer id);

    //未满标数量
    Integer sumNoFullItemNum(Map map);

    //未满标金额
    Double sumNoFullItemAccount(Map map);

    //满标差额
    Double sumFullItemAccountBalance(Map map);

    //统计自动投标人数
    Integer countAutoInvestNum(Map map);

    //统计非自动投标人数
    Integer countNoAutoInvestNum(Map map);


    //根据id修改内容
    Integer modifyContentById( String itemContent,Integer id);


    //首页显示新手标单个项目
    BasItem getIsNewItem();

    /**
     * 通过包ID查询包下面的标
     * @param packageId
     */
    PageList getItemListByPackageId(Paginator p,Integer packageId);


//    /*
//    * 包初审
//    * @param itemStr 所有包下面的标
//    * @param eachAmount 每份金额(包表)
//    * @param content 内容(包表)
//    * */
//    Object packageFirstTrial(BigDecimal eachAmount,String content,Integer packageId);

    /**
     * 资产转标
     * @param sysAssetProductvo 资产对象
     * @param itemRate
     * @return
     */
    Integer assetsShiftBid(SysAssetProductVo sysAssetProductvo, BigDecimal debtServeFeeRate, BigDecimal itemRate,BigDecimal itemSingleMinInvestment);

//    /**
//     * 解冻
//     * @param investList
//     * @return
//     */
//    Object thawBoolean(List<BusItemInvest> investList,Integer itemId);
//
//    /**
//     * 批量投资
//     * @param item
//     * @param investList
//     * @return
//     */
//    Map batchInvest(BasItem item, List<BusItemInvest> investList);
//
//    /**
//     * 成标
//     * @param itemId
//     * @param item
//     * @param investList
//     */
//    void creatBid(int itemId, BasItem item, List<BusItemInvest> investList);

    List<BasItem> getItemListByPackageId(Integer packageId);

    PageList checkAccountList(Paginator p, Map map);

    List<AccountCheckingVo> checkAccountList(Map map);

    //对账管理统计
    Map checkAccountStat(Map map);

    /**
     * app项目和包计划列表
     * @return
     */
    PageList itemAndPackagePlanList(Paginator p);
}
